package com.htwy.core.model;

import com.htwy.core.config.WebappConfig;
import com.htwy.kits.NumberKit;
import com.jfinal.kit.Kv;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.SqlPara;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 系统附件表
 */
public class Attachment extends BaseModel<Attachment> {

    public static Attachment dao=new Attachment();


    /**
     * <p>设置主键</p>
     *
     * @param uuid 主键
     * @return 当前对象
     */
    public Attachment setUuid(String uuid) {
        set("uuid", uuid);
        return this;
    }

    /**
     * <p>获取主键</p>
     *
     * @return 主键
     */
    public String getUuid() {
        return getStr("uuid");
    }

    /**
     * <p>设置上传文件的文件名</p>
     *
     * @param filename 文件名
     * @return 当前对象
     */
    public Attachment setFilename(String filename) {
        set("filename", filename);
        return this;
    }

    /**
     * <p>获取上传文件的文件名</p>
     *
     * @return 主键
     */
    public String getFilename() {
        return getStr("filename");
    }

    /**
     * <p>设置文件存储路径</p>
     *
     * @param filePath 文件存储路径
     * @return 当前对象
     */
    public Attachment setFilePath(String filePath) {
        set("filePath", filePath);
        return this;
    }

    /**
     * <p>获取文件存储路径</p>
     *
     * @return 文件存储路径
     */
    public String getFilePath() {
        return getStr("filePath");
    }

    /**
     * <p>设置文件后缀</p>
     *
     * @param suffix 文件后缀
     * @return 当前对象
     */
    public Attachment setSuffix(String suffix) {
        set("suffix", suffix);
        return this;
    }

    /**
     * <p>获取文件后缀</p>
     *
     * @return 文件后缀
     */
    public String getSuffix() {
        return getStr("suffix");
    }

    /**
     * <p>设置文件MINETYPE</p>
     *
     * @param mineType 文件MINETYPE
     * @return 当前对象
     */
    public Attachment setMineType(String mineType) {
        set("mineType", mineType);
        return this;
    }

    /**
     * <p>获取文件MINETYPE</p>
     *
     * @return 文件MINETYPE
     */
    public String getMineType() {
        return getStr("mineType");
    }

    /**
     * <p>设置文件大小</p>
     *
     * @param fileSize 文件大小
     * @return 当前对象
     */
    public Attachment setFileSize(String fileSize) {
        set("fileSize", fileSize);
        return this;
    }

    /**
     * <p>获取文件大小</p>
     *
     * @return 文件大小
     */
    public String getFileSize() {
        return getStr("fileSize");
    }

    /**
     * <p>设置上传时间</p>
     *
     * @param uploadTime 上传时间
     * @return 当前上传时间
     */
    public Attachment setUploadTime(Date uploadTime) {
        set("uploadTime", uploadTime);
        return this;
    }

    /**
     * <p>获取上传时间</p>
     *
     * @return 上传时间
     */
    public Date getUploadTime() {
        return getDate("uploadTime");
    }

    /**
     * <p>设置上传者</p>
     *
     * @param uploader 上传者
     * @return 当前对象
     */
    public Attachment setUploader(String uploader) {
        set("uploader", uploader);
        return this;
    }

    /**
     * <p>获取上传者</p>
     *
     * @return 上传者
     */
    public String getUploader() {
        return getStr("uploader");
    }

    /**
     * <p>设置删除时间</p>
     *
     * @param deleteTime 删除时间
     * @return 当前对象
     */
    public Attachment setDeleteTime(Date deleteTime) {
        set("deleteTime", deleteTime);
        return this;
    }

    /**
     * <p>获取删除时间</p>
     *
     * @return 删除时间
     */
    public Date getDeleteTime() {
        return getDate("deleteTime");
    }

    /**
     * <p>设置删除者</p>
     *
     * @param deleteBy 删除者
     * @return 当前对象
     */
    public Attachment setDeleteBy(String deleteBy) {
        set("deleteBy", deleteBy);
        return this;
    }

    /**
     * <p>获取删除者</p>
     *
     * @return 删除者
     */
    public String getDeleteBy() {
        return getStr("deleteBy");
    }

    /**
     * <p>设置类型名称</p>
     *
     * @param entityName 类型名称
     * @return 当前对象
     */
    public Attachment setEntityName(String entityName) {
        set("entityName", entityName);
        return this;
    }

    /**
     * <p>获取类型名称</p>
     *
     * @return 类型名称
     */
    public String getEntityName() {
        return getStr("entityName");
    }

    /**
     * <p>设置类型对应字段名称</p>
     *
     * @param fieldName 类型对应字段名称
     * @return 当前对象
     */
    public Attachment setFieldName(String fieldName) {
        set("fieldName", fieldName);
        return this;
    }

    /**
     * <p>获取类型对应字段名称</p>
     *
     * @return 类型对应字段名称
     */
    public String getFieldName() {
        return getStr("fieldName");
    }

    /**
     * <p>设置类型对应主键</p>
     *
     * @param pkValue 类型对应主键
     * @return 当前对象
     */
    public Attachment setPkValue(String pkValue) {
        set("pkValue", pkValue);
        return this;
    }

    /**
     * <p>获取类型对应主键</p>
     *
     * @return 类型对应主键
     */
    public String getPkValue() {
        return getStr("pkValue");
    }

    /**
     * <p>设置文件状态</p>
     *
     * @param status 文件状态
     * @return 当前对象
     */
    public Attachment setStatus(String status) {
        set("status", status);
        return this;
    }

    /**
     * <p>获取文件状态</p>
     *
     * @return 文件状态
     */
    public String getStatus() {
        return getStr("status");
    }


    @Override
    public List<Attachment> findByCondition(Map<String, Object> conditions) {
        SqlPara sqlPara=getSqlPara("com.htwy.core.model.Attachment.findByCondition", conditions);
        return dao().find(sqlPara);
    }

    @Override
    public Page<Attachment> paginateByCondition(Map<String, Object> conditions) {
        int pageNumber=1;
        int pageSize=WebappConfig.getConfig().getInt("defaultPageSize", 20);
        if(conditions.containsKey("pageNumber")) {
            String pageNumberStr=(String) conditions.get("pageNumber");
            if(StrKit.notBlank(pageNumberStr) && NumberKit.isZNum(pageNumberStr)) {
                pageNumber=Integer.parseInt(pageNumberStr);
            }
        }
        if(conditions.containsKey("pageSize")) {
            String pageSizeStr=(String) conditions.get("pageSize");
            if(StrKit.notBlank(pageSizeStr) && NumberKit.isZNum(pageSizeStr)) {
                pageSize=Integer.parseInt(pageSizeStr);
            }
        }
        return paginateByCondition(pageNumber, pageSize, conditions);
    }

    @Override
    public Page<Attachment> paginateByCondition(int pageNumber, int pageSize,
        Map<String, Object> conditions) {
        SqlPara sqlPara=getSqlPara("com.htwy.core.model.Attachment.findByCondition", conditions);
        return dao().paginate(pageNumber, pageSize, sqlPara);
    }

    @Override
    public int deleteByPks(String... pks) {
        if(pks != null && pks.length>0) {
            SqlPara sqlPara = getSqlPara("com.htwy.core.model.Attachment.deleteByPks", Kv.by("pks",pks));
            int result = Db.update(sqlPara);
            return result;
        }
        return 0;
    }
}
